package com.kk.xhr.model.service;

import com.kk.xhr.common.pojo.ApplyStatusEnum;
import com.kk.xhr.model.dto.ApplyQueryRequestDTO;
import com.kk.xhr.model.dto.LeaveDTO;
import com.kk.xhr.model.dto.PageDto;

import java.util.Optional;

/**
 * 请假服务接口
 *
 * @author luokexiong
 * @version 1.0 2021/2/19
 * @since 1.0.0
 */
public interface ILeaveService {

    /**
     * 分页查询请假
     *
     * @param dto    查询dto
     * @return LeaveDTO
     */
    PageDto<LeaveDTO> query(ApplyQueryRequestDTO dto);

    /**
     * 添加请假信息
     *
     * @param dto LeaveDTO
     * @return 是否成功
     */
    boolean add(LeaveDTO dto);

    /**
     * 根据主键id和状态进行修改
     *
     * @param id     主键id
     * @param status 申请状态
     * @return 是否成功
     */
    boolean modify(Long id, ApplyStatusEnum status);

    /**
     * 根据id查询
     *
     * @param id 主键id
     * @return LeaveDTO
     */
    Optional<LeaveDTO> queryById(Long id);

    /**
     * 根据id查询审核中的数据
     *
     * @param id 主键id
     * @return LeaveDTO
     */
    Optional<LeaveDTO> query(Long id);
}
